home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993 April: Penguin on DISC / ADC Developer CD (1993-04) (''Penguin On DISC'')_iso / Dev.CD Apr 93.iso / Utilities / MPW Interfaces 7.1 Beta / CIncludes / Memory.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-28  |  9.7 KB  |  351 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Saturday, July 27, 1991 at 4:28 PM
  5.  Memory.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1985-1992
  10.   All rights reserved
  11.  
  12. *** Warning: This is an alpha version of the Interfaces for Cube-E. 
  13. ***          Things may change.  Caveat Programmer.
  14.  
  15.  
  16. */
  17.  
  18.  
  19. #ifndef __MEMORY__
  20. #define __MEMORY__
  21.  
  22. #ifndef __TYPES__
  23. #include <Types.h>
  24. #endif
  25.  
  26.  
  27. enum {
  28.  
  29.  maxSize = 0x800000,    /*Max data block size is 8 megabytes*/
  30.  defaultPhysicalEntryCount = 8,
  31.  
  32. /* values returned from the GetPageState function */
  33.  kPageInMemory = 0,
  34.  kPageOnDisk = 1,
  35.  kNotPaged = 2
  36. };
  37.  
  38. typedef long Size;        /* size of a block in bytes */
  39. typedef pascal long (*GrowZoneProcPtr)(Size cbNeeded);
  40.  
  41. struct Zone {
  42.  Ptr bkLim;
  43.  Ptr purgePtr;
  44.  Ptr hFstFree;
  45.  long zcbFree;
  46.  GrowZoneProcPtr gzProc;
  47.  short moreMast;
  48.  short flags;
  49.  short cntRel;
  50.  short maxRel;
  51.  short cntNRel;
  52.  short maxNRel;
  53.  short cntEmpty;
  54.  short cntHandles;
  55.  long minCBFree;
  56.  ProcPtr purgeProc;
  57.  Ptr sparePtr;
  58.  Ptr allocPtr;
  59.  short heapData;
  60. };
  61.  
  62. typedef struct Zone Zone;
  63. typedef Zone *THz;
  64.  
  65. struct MemoryBlock {
  66.  void * address;
  67.  unsigned long count;
  68. };
  69.  
  70. typedef struct MemoryBlock MemoryBlock;
  71.  
  72. struct LogicalToPhysicalTable {
  73.  MemoryBlock logical;
  74.  MemoryBlock physical[defaultPhysicalEntryCount];
  75. };
  76.  
  77. typedef struct LogicalToPhysicalTable LogicalToPhysicalTable;
  78.  
  79.  
  80. typedef short PageState;
  81. typedef short StatusRegisterContents;
  82.  
  83. #ifdef __cplusplus
  84. extern "C" {
  85. #endif
  86. #define GetApplLimit() (* (Ptr*) 0x0130)
  87. #pragma parameter __A0 GetZone
  88. pascal THz GetZone(void)
  89.  = 0xA11A; 
  90. #define SystemZone() (* (THz*) 0x02A6)
  91. #define ApplicZone() (* (THz*) 0x02AA)
  92. #define ApplicationZone() (* (THz*) 0x02AA)
  93. #pragma parameter __A0 NewHandle(__D0)
  94. pascal Handle NewHandle(Size byteCount)
  95.  = 0xA122; 
  96. #pragma parameter __A0 NewHandleSys(__D0)
  97. pascal Handle NewHandleSys(Size byteCount)
  98.  = 0xA522; 
  99. #pragma parameter __A0 NewHandleClear(__D0)
  100. pascal Handle NewHandleClear(Size byteCount)
  101.  = 0xA322; 
  102. #pragma parameter __A0 NewHandleSysClear(__D0)
  103. pascal Handle NewHandleSysClear(Size byteCount)
  104.  = 0xA722; 
  105. #pragma parameter __A0 HandleZone(__A0)
  106. pascal THz HandleZone(Handle h)
  107.  = 0xA126; 
  108. #pragma parameter __A0 RecoverHandle(__A0)
  109. pascal Handle RecoverHandle(Ptr p)
  110.  = 0xA128; 
  111. #pragma parameter __A0 RecoverHandleSys(__A0)
  112. pascal Handle RecoverHandleSys(Ptr p)
  113.  = 0xA528; 
  114. #pragma parameter __A0 NewPtr(__D0)
  115. pascal Ptr NewPtr(Size byteCount)
  116.  = 0xA11E; 
  117. #pragma parameter __A0 NewPtrSys(__D0)
  118. pascal Ptr NewPtrSys(Size byteCount)
  119.  = 0xA51E; 
  120. #pragma parameter __A0 NewPtrClear(__D0)
  121. pascal Ptr NewPtrClear(Size byteCount)
  122.  = 0xA31E; 
  123. #pragma parameter __A0 NewPtrSysClear(__D0)
  124. pascal Ptr NewPtrSysClear(Size byteCount)
  125.  = 0xA71E; 
  126. #pragma parameter __A0 PtrZone(__A0)
  127. pascal THz PtrZone(Ptr p)
  128.  = 0xA148; 
  129. #define GZSaveHnd() (* (Handle*) 0x0328)
  130. #define TopMem() (* (Ptr*) 0x0108)
  131. #pragma parameter __D0 MaxBlock
  132. pascal long MaxBlock(void)
  133.  = 0xA061; 
  134. #pragma parameter __D0 MaxBlockSys
  135. pascal long MaxBlockSys(void)
  136.  = 0xA461; 
  137. #pragma parameter __D0 StackSpace
  138. pascal long StackSpace(void)
  139.  = 0xA065; 
  140. #pragma parameter __A0 NewEmptyHandle
  141. pascal Handle NewEmptyHandle(void)
  142.  = 0xA166; 
  143. #pragma parameter __A0 NewEmptyHandleSys
  144. pascal Handle NewEmptyHandleSys(void)
  145.  = 0xA566; 
  146. #pragma parameter HLock(__A0)
  147. pascal void HLock(Handle h)
  148.  = 0xA029; 
  149. #pragma parameter HUnlock(__A0)
  150. pascal void HUnlock(Handle h)
  151.  = 0xA02A; 
  152. #pragma parameter HPurge(__A0)
  153. pascal void HPurge(Handle h)
  154.  = 0xA049; 
  155. #pragma parameter HNoPurge(__A0)
  156. pascal void HNoPurge(Handle h)
  157.  = 0xA04A; 
  158. #pragma parameter HLockHi(__A0)
  159. pascal void HLockHi(Handle h)
  160.  = {0xA064,0xA029}; 
  161. #if SystemSixOrLater
  162. #pragma parameter __D0 StripAddress(__D0)
  163. pascal Ptr StripAddress(void *theAddress)
  164.  = 0xA055; 
  165. #else
  166. pascal Ptr StripAddress(void *theAddress);
  167. #endif
  168. #pragma parameter __D0 Translate24To32(__D0)
  169. pascal Ptr Translate24To32(void *addr24)
  170.  = 0xA091; 
  171. pascal Handle TempNewHandle(Size logicalSize,OSErr *resultCode)
  172.  = {0x3F3C,0x001D,0xA88F}; 
  173. pascal Size TempMaxMem(Size *grow)
  174.  = {0x3F3C,0x0015,0xA88F}; 
  175. pascal long TempFreeMem(void)
  176.  = {0x3F3C,0x0018,0xA88F}; 
  177. /*  Temporary Memory routines renamed, but obsolete, in System 7.0 and later.  */
  178. pascal void TempHLock(Handle h,OSErr *resultCode)
  179.  = {0x3F3C,0x001E,0xA88F}; 
  180. pascal void TempHUnlock(Handle h,OSErr *resultCode)
  181.  = {0x3F3C,0x001F,0xA88F}; 
  182. pascal void TempDisposeHandle(Handle h,OSErr *resultCode)
  183.  = {0x3F3C,0x0020,0xA88F}; 
  184. pascal Ptr TempTopMem(void)
  185.  = {0x3F3C,0x0016,0xA88F}; 
  186. /*  Temporary Memory routines as they were known before System 7.0.  */
  187. pascal Size MFMaxMem(Size *grow)
  188.  = {0x3F3C,0x0015,0xA88F}; 
  189. pascal long MFFreeMem(void)
  190.  = {0x3F3C,0x0018,0xA88F}; 
  191. pascal Handle MFTempNewHandle(Size logicalSize,OSErr *resultCode)
  192.  = {0x3F3C,0x001D,0xA88F}; 
  193. pascal void MFTempHLock(Handle h,OSErr *resultCode)
  194.  = {0x3F3C,0x001E,0xA88F}; 
  195. pascal void MFTempHUnlock(Handle h,OSErr *resultCode)
  196.  = {0x3F3C,0x001F,0xA88F}; 
  197. pascal void MFTempDisposHandle(Handle h,OSErr *resultCode)
  198.  = {0x3F3C,0x0020,0xA88F}; 
  199. pascal Ptr MFTopMem(void)
  200.  = {0x3F3C,0x0016,0xA88F}; 
  201. pascal void InitApplZone(void)
  202.  = 0xA02C; 
  203. pascal void InitZone(GrowZoneProcPtr pgrowZone,short cmoreMasters,void *limitPtr,
  204.  void *startPtr); 
  205. #pragma parameter SetZone(__A0)
  206. pascal void SetZone(THz hz)
  207.  = 0xA01B; 
  208. #pragma parameter __D0 CompactMem(__D0)
  209. pascal Size CompactMem(Size cbNeeded)
  210.  = 0xA04C; 
  211. #pragma parameter __D0 CompactMemSys(__D0)
  212. pascal Size CompactMemSys(Size cbNeeded)
  213.  = 0xA44C; 
  214. #pragma parameter PurgeMem(__D0)
  215. pascal void PurgeMem(Size cbNeeded)
  216.  = 0xA04D; 
  217. #pragma parameter PurgeMemSys(__D0)
  218. pascal void PurgeMemSys(Size cbNeeded)
  219.  = 0xA44D; 
  220. #pragma parameter __D0 FreeMem
  221. pascal long FreeMem(void)
  222.  = 0xA01C; 
  223. #pragma parameter __D0 FreeMemSys
  224. pascal long FreeMemSys(void)
  225.  = 0xA41C; 
  226. #pragma parameter ResrvMem(__D0)
  227. pascal void ResrvMem(Size cbNeeded)
  228.  = 0xA040; 
  229. #pragma parameter ReserveMem(__D0)
  230. pascal void ReserveMem(Size cbNeeded)
  231.  = 0xA040; 
  232. #pragma parameter ReserveMemSys(__D0)
  233. pascal void ReserveMemSys(Size cbNeeded)
  234.  = 0xA440; 
  235. #pragma parameter __D0 MaxMem(__A1)
  236. pascal Size MaxMem(Size *grow)
  237.  = {0xA11D,0x2288}; 
  238. #pragma parameter __D0 MaxMemSys(__A1)
  239. pascal Size MaxMemSys(Size *grow)
  240.  = {0xA51D,0x2288}; 
  241. #pragma parameter SetGrowZone(__A0)
  242. pascal void SetGrowZone(GrowZoneProcPtr growZone)
  243.  = 0xA04B; 
  244. #pragma parameter SetApplLimit(__A0)
  245. pascal void SetApplLimit(void *zoneLimit)
  246.  = 0xA02D; 
  247. #pragma parameter MoveHHi(__A0)
  248. pascal void MoveHHi(Handle h)
  249.  = 0xA064; 
  250. #pragma parameter DisposPtr(__A0)
  251. pascal void DisposPtr(Ptr p)
  252.  = 0xA01F; 
  253. #pragma parameter DisposePtr(__A0)
  254. pascal void DisposePtr(Ptr p)
  255.  = 0xA01F; 
  256. pascal Size GetPtrSize(Ptr p); 
  257. #pragma parameter SetPtrSize(__A0,__D0)
  258. pascal void SetPtrSize(Ptr p,Size newSize)
  259.  = 0xA020; 
  260. #pragma parameter DisposHandle(__A0)
  261. pascal void DisposHandle(Handle h)
  262.  = 0xA023; 
  263. #pragma parameter DisposeHandle(__A0)
  264. pascal void DisposeHandle(Handle h)
  265.  = 0xA023; 
  266. pascal Size GetHandleSize(Handle h); 
  267. #pragma parameter SetHandleSize(__A0,__D0)
  268. pascal void SetHandleSize(Handle h,Size newSize)
  269.  = 0xA024; 
  270. #pragma parameter EmptyHandle(__A0)
  271. pascal void EmptyHandle(Handle h)
  272.  = 0xA02B; 
  273. #pragma parameter ReallocHandle(__A0,__D0)
  274. pascal void ReallocHandle(Handle h,Size byteCount)
  275.  = 0xA027; 
  276. #pragma parameter ReallocateHandle(__A0,__D0)
  277. pascal void ReallocateHandle(Handle h,Size byteCount)
  278.  = 0xA027; 
  279. #pragma parameter HSetRBit(__A0)
  280. pascal void HSetRBit(Handle h)
  281.  = 0xA067; 
  282. #pragma parameter HClrRBit(__A0)
  283. pascal void HClrRBit(Handle h)
  284.  = 0xA068; 
  285. pascal void MoreMasters(void)
  286.  = 0xA036; 
  287. #pragma parameter BlockMove(__A0,__A1,__D0)
  288. pascal void BlockMove(const void *srcPtr,void *destPtr,Size byteCount)
  289.  = 0xA02E; 
  290. #define MemError() (* (OSErr*) 0x0220)
  291. pascal void PurgeSpace(long *total,long *contig); 
  292. #pragma parameter __D0 HGetState(__A0)
  293. pascal char HGetState(Handle h)
  294.  = 0xA069; 
  295. #pragma parameter HSetState(__A0,__D0)
  296. pascal void HSetState(Handle h,char flags)
  297.  = 0xA06A; 
  298. #pragma parameter SetApplBase(__A0)
  299. pascal void SetApplBase(void *startPtr)
  300.  = 0xA057; 
  301. pascal void MaxApplZone(void)
  302.  = 0xA063; 
  303. #pragma parameter __D0 HoldMemory(__A0,__A1)
  304. pascal OSErr HoldMemory(void *address,unsigned long count)
  305.  = {0x7000,0xA05C}; 
  306. #pragma parameter __D0 UnholdMemory(__A0,__A1)
  307. pascal OSErr UnholdMemory(void *address,unsigned long count)
  308.  = {0x7001,0xA05C}; 
  309. #pragma parameter __D0 LockMemory(__A0,__A1)
  310. pascal OSErr LockMemory(void *address,unsigned long count)
  311.  = {0x7002,0xA05C}; 
  312. #pragma parameter __D0 LockMemoryContiguous(__A0,__A1)
  313. pascal OSErr LockMemoryContiguous(void *address,unsigned long count)
  314.  = {0x7004,0xA05C}; 
  315. #pragma parameter __D0 UnlockMemory(__A0,__A1)
  316. pascal OSErr UnlockMemory(void *address,unsigned long count)
  317.  = {0x7003,0xA05C}; 
  318. pascal OSErr GetPhysical(LogicalToPhysicalTable *addresses,unsigned long *physicalEntryCount); 
  319. #pragma parameter __D0 DeferUserFn(__A0,__D0)
  320. pascal OSErr DeferUserFn(ProcPtr userFunction,void *argument)
  321.  = 0xA08F; 
  322. #pragma parameter __D0 DebuggerGetMax
  323. pascal long DebuggerGetMax(void)
  324.  = {0x7000,0xA08D}; 
  325. pascal void DebuggerEnter(void)
  326.  = {0x7001,0xA08D}; 
  327. pascal void DebuggerExit(void)
  328.  = {0x7002,0xA08D}; 
  329. pascal void DebuggerPoll(void)
  330.  = {0x7003,0xA08D}; 
  331. #pragma parameter __D0 GetPageState(__A0)
  332. pascal PageState GetPageState(const void *address)
  333.  = {0x7004,0xA08D}; 
  334. #pragma parameter __D0 PageFaultFatal
  335. pascal Boolean PageFaultFatal(void)
  336.  = {0x7005,0xA08D}; 
  337. #pragma parameter __D0 DebuggerLockMemory(__A0,__A1)
  338. pascal OSErr DebuggerLockMemory(void *address,unsigned long count)
  339.  = {0x7006,0xA08D}; 
  340. #pragma parameter __D0 DebuggerUnlockMemory(__A0,__A1)
  341. pascal OSErr DebuggerUnlockMemory(void *address,unsigned long count)
  342.  = {0x7007,0xA08D}; 
  343. #pragma parameter __D0 EnterSupervisorMode
  344. pascal StatusRegisterContents EnterSupervisorMode(void)
  345.  = {0x7008,0xA08D}; 
  346. #ifdef __cplusplus
  347. }
  348. #endif
  349.  
  350. #endif
  351.